package com.itheima.io.bufferedoutputstream.demo01;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 使用BufferedOutputStream写数据；BufferedOutputStream内部维护了一个缓冲区(就是内存中的一小块区域，底层的实现是通过数组)
 * 默认缓冲区的大小是8192个字节，
 */
public class BufferedOutputStreamDemo01 {

    public static void main(String[] args) throws IOException {

        // 创建BufferedOutputStream对象
        /**
         * 要创建BufferedOutputStream对象，那么我们就需要去借助于BufferedOutputStream的构造方法
         * public BufferedOutputStream​(OutputStream out)         创建一个新的缓冲输出流，以将数据写入指定的底层输出流。
         * public BufferedOutputStream​(OutputStream out,int size)创建一个新的缓冲输出流，以便以指定的缓冲区大小将数据写入指定的底层输出流。
         *
         * 一般情况下我们选定的都是第一个构造方法： public BufferedOutputStream​(OutputStream out)
         * 这个构造方法需要一个参数这个参数的类型是OutputStream ， 那么我们在使用这个构造方法创建对象的时候，就需要为其传递一个OutputStream的对象
         * OutputStream是一个抽象类，我们不能直接new，那么我们应该办呢？我们应该为其传递一个子类对象，而子类我们目前学习了一个FileOutputStream
         * 因此我们需要首先创建FileOutputStream对象，然后把这个对象作为BufferedOutputStream​的构造方法的参数传递过去
         */
        // FileOutputStream fileOutputStream = new FileOutputStream("itheima-io-bufferedoutputstream\\a.txt") ;
        // BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream) ;
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("itheima-io-bufferedoutputstream\\a.txt") ) ;

        // 写数据
        bufferedOutputStream.write("itheima is very good".getBytes());

        // 释放资源
        bufferedOutputStream.close();

    }


}
